Skyrim 4GB
==========
by MonochromeWench (the.wench@wenchy.net)

Skyrim4GB is a tool to load SKyrin with the Large Address Aware 
executable flag set so the entire 4GB Virtual Memory Address Space can be used
by the game.

This is my 'official' port of my tool that did the same to Fallout NV.

Skyrim4GB is licensed under the terms of the GNU Lesser General Public License 
version 2.1. Read the included lgpl-2.1.txt for the terms. Source code is included
with the package. Original binaries compiled using Microsoft Visual Studio 2010.


Update History
--------------
1.5 

Fixed at least one case that was causing people to get Access Denied error 
messages.

Changed the default laaexe to be '.\exes\TESV.exe' instead of 'TESV.exe.4gb'.
This is so people don't have issues with other programs detecting when Skyrim 
runs.

Updated the code so it wont fail if the original exe already had the LAA flag 
set as will apparently happen in the next Skyrim patch. If the LAA flag is 
already set, the loader will NOT create a modified executable. It will directly
run the original exe without modifications while still injecting skse and extra
dlls specified with -extradll.

Added -nolaa command line options. If the original exe didn't have the LAA flag
the loader will directly load the original exe without modifications while 
still injecting other dlls. If the original exe had the LAA flag set, then a 
modified exe will be generated with the LAA flag unset and that will then be 
run by the loader.

1.4

Generally cleaned up the code. 

Rewrote how the helper dll is injected into the child process. Moved helper dll
code out of DLLMain into its own function that gets called after the DLL has 
finished being loaded. I want to avoid the possibility of issues with the 
Windows DLL Loader Lock.

Skyrim4GB now accepts a variety of command line parameters to control what it 
does. See the Command Line Reference below for details.

1.3

The loader now prints out details of what it is doing.

It also now attempts to check if TESV.exe has been modified. If the exe is 
detected as modified it will tell you, instructing you to get Steam to validate
the cache.

The loader will no longer wait for TESV.exe.4gb to exit before it exits itself.

The helper dll will now attempt to hook GetModuleFileNameA, if possible, to 
disguise what exe is actually loaded. If that hook fails it will fallback to
the older CreateFileA hook.

1.2

Skyrim4GB will attempt to load the SKSE loader (skse_steam_loader.dll).

Skyrim4GB no longer hooks GetTickCount(). 

1.1

Made some code changes that 'may' improve things for some people. Now checks 
the Bethesda Softworks\Skyrim and Valve\Steam paths for the installation 
directory.

Also will now write out a log file to ~\Documents\My Games\Skyrim\Skyrim4GB.log
that outputs some debugging information that may help track down why it doesn't
work for some people.

If you are getting Steam Application load error 3:0000065432 messages then 
please post the log contents to the discussion thread so I can see whats going
on.

Also compiled the new version with Visual Studio 2010. This may or may not make
any difference.


Running
-------
First, make sure Steam is running. Then run Skyrim4GB.exe to launch the game! 
You don't even need it in the games directory, just make sure skyrim4gb.exe and
skyrim4gb_helper.dll are together.

If your version of Skyrim is not the standard version with the
SteamAppID of 72850 you need to run Skyrim4gb.exe and specify the actual 
SteamAppID on the command line. Example: Skyrim4gb.exe -SteamAppID 72850


Command Line Reference
----------------------

Skyrim4GB.exe [-exe string] [-laaexe string] [-SteamAppID number] [-nolaa]
              [-noskse] [-extradll string [-extradll string [...]]]
			  [-- game parameters]

Details

-exe        The games original executable. If not an absolute path Skyrim4GB
            will look for the executable in the Skyrim directory using paths
			that should be in the registry. 
			Default is TESV.exe.

-laaexe     The executable created by the loader that has the LAA flag set. 
            This must not be the same file as the original executable. 
			* If this is an absolute path the file will be created using that 
			  exact path.
			* If the path starts with .\ the exe will be created relative to 
			  the directory containg Skyrim4GB.
			* Otherwise it will be created relative to the original executable.
			Default is use the original's name and create it in a directory 
			called 'exes' in the directory containing Skyrim4GB.exe.

-SteamAppID The SteamAppID id to use. Default is 72850

-nolaa      Don't set the LAA flag or unset it if it was already set in the 
            original executable. 

-noskse     Disable attempting to load SKSE (Skyrim Script Extender)

-extradll   An extra dll to load into the laaexe process after its been 
            created. This can be specified multiple times to load more than one
			dll.

--          Anything after this will be passed as is to the game when the 
            loader creates the process.

Examples

Skyrim4GB.exe -laaexe .\TESV.exe
    Create a LAA Exe called TESV.exe in the directory containing Skyrim4GB. 
	This is probably what you'd want to do if you need some other application
	to detect TESV.exe loading, not TESV.exe.4gb

Skyrim4GB.exe -exe "C:\Steam\steamapps\common\fallout new vegas\FalloutNV.exe" -laaexe .\FalloutNV.exe -SteamAppID 22380 -noskse
    Run a completely different game using the loader. In this case Fallout NV 
	with SKSE disabled because thats just not going to work with FalloutNV.


